package com;

/**
 * 代理模式（Proxy）:
 *为其他对象提供一种代理以控制对这个对象的访问
 * 代理模式说白了就是“真实对象”的代表，在访问对象时引入一定程度的间接性，因为这种间接性可以附加多种用途
 */
public class StaticProxy {
    public static void main(String[] args) {
        ProxyAction proxyAction = new ProxyAction(new UserAction());
         proxyAction.doAction();
    }
}

interface Action{
    public void doAction();
}
class  ProxyAction implements Action{
   private Action target;
   public ProxyAction (Action target){
       this.target=target;
   }

    @Override
    public void doAction() {
        long l = System.currentTimeMillis();
        target.doAction();
        long l1 = System.currentTimeMillis();
        System.out.println("持续了"+(l1-l)+"毫秒");
    }
}

class UserAction implements Action{
    @Override
    public void doAction() {
        for (int i = 0; i <100 ; i++) {
            System.out.println("用户开始工作");
        }

    }
}